package tjut.db;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import tjut.test.MybatisTestDriver;

public class DBDriver {
	// 静态的成员变量

	private static SqlSessionFactory sessionFatory;

	private DBDriver() {
		// 阻止外部new方式的创建实例对象

	}

	/** 
	 * 单例模式获取SqlSessionFactory对象
	 * @return sessionFatory
	 */
	public static SqlSessionFactory getNewInstanceSessionFactory() {
		if (sessionFatory == null) {
			try {
				// 创建该对象

				// 1 获取Mybatis的属性配置文件信息

				InputStream is = MybatisTestDriver.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
				// 1.2 获取数据库连接属性的配置文件

				Properties prop = new Properties();
				// 加载属性配置文件

				prop.load(MybatisTestDriver.class.getClassLoader().getResourceAsStream("db.properties"));
				// 2 获取sqlsessionFactory对象

				sessionFatory = new SqlSessionFactoryBuilder().build(is, prop);
				// 没有处理线程安全，如何处理？

			} catch (IOException e) {
				// TODO Auto-generated catch block

				e.printStackTrace();
			}
		}
		// 返回该对象

		return sessionFatory;
	}

}
